<template>
<div style="height: 100%; width: 100%">
    <baidu-map
        @click="mapClick"
        class="map"
        @ready="mapReady"
        :center="position"
        :zoom="12"
        :scroll-wheel-zoom="true"
      >
      <!-- 检索控件 -->
        <bm-local-search
          :auto-viewport="true"
          :location="city"
        ></bm-local-search>
        <!-- 标点控件 -->
        <bm-marker :position="markerPoint" :dragging="true"></bm-marker>

        <!-- 搜索城市 -->
        <bm-control>
          <div class="background">
            城市名:
            <el-input v-model="city" size="mini" type="text" /><el-button
              size="mini"
              @click="queryByCity"
              >查询</el-button
            >
          </div>
        </bm-control>
      </baidu-map>
</div>
</template>

<script>
import { editPosition} from "@/api/user";
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》'

export default {
//import引入的组件需要注入到对象中才能使用
components: {},
props: {},
data() {
//这里存放数据
return {
    city: "",
    // markerPoint: { lng: 116.331398, lat: 39.897445 },
    markerPoint: {
    lng: this.$store.state.user.position.lng,
    lat: this.$store.state.user.position.lat,
    },
    position: {
    lng: this.$store.state.user.position.lng,
    lat: this.$store.state.user.position.lat,
    },
    map: {},
};
},
//计算属性 类似于data概念
computed: {},
//监控data中的数据变化
watch: {},
//方法集合
methods: {
    queryByCity() {
      this.map.centerAndZoom(this.city,12);
      this.city = '';
      console.log("查询城市", this.city);
    },
    mapClick({ type, target, point, pixel, overlay }) {
      // 屏幕像素转坐标
      // console.log(this.map.pixelToPoint(pixel))
      console.log("被点击了", point);
      this.markerPoint = point;

      this.$confirm(
        `是否修改到当前位置${this.markerPoint.lng},${this.markerPoint.lat}`,
        "提示",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        }
      )
        .then(() => {
          this.editPosition();
        })
        .catch(()=>{});
    },
    mapReady({ BMap, map }) {
      // 选择一个经纬度作为中心点
      console.log(this, map);
      this.map = map;
      // this.point = new BMap.Point(this.position.lat,this.position.lng);
      // map.centerAndZoom(this.point, 12);

      console.log(this.point);
    },
    // 修改坐标
    editPosition() {
      console.log("坐标修改成功", this.markerPoint);

      editPosition({ lng: this.markerPoint.lng, lat: this.markerPoint.lat })
        .then(() => {
          this.$tips("修改成功!","success");
        })
        .catch(((err) => {this.$tips(err.message,"error")}));
    },
},
//声明周期 - 创建完成（可以访问当前this实例）
created() {},
//声明周期 - 挂载完成（可以访问DOM元素）
mounted() {},
beforeCreate() {}, //生命周期 - 创建之前
beforeMount() {}, //生命周期 - 挂载之前
beforeUpdate() {}, //生命周期 - 更新之前
updated() {}, //生命周期 - 更新之后
beforeDestroy() {}, //生命周期 - 销毁之前
destroyed() {}, //生命周期 - 销毁完成
activated() {} //如果页面有keep-alive缓存功能，这个函数会触发
};
</script>
<style>
@media screen and (max-width: 750px) {
  .el-message-box {
    width: 60% !important;
  }
}

</style>
<style scoped>
.map {
  height: 100%;
  width: 100%;
  /* margin: 0 auto; */
}
.background {
  padding: 7px 8px;
  position: absolute;
  top: 10px;
  left: 20px;
  width: 300px;
  background: #fff;
  box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
  border-radius: 7px;
  z-index: 99;
}
</style>